package com.yan.yanbi.utils;

import com.yan.yanbi.constant.ChartConstant;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 使用正则表达式提取合法的echarts图表配置
 *
 * @author yhnyhn123
 * @version 1.0
 * @description 处理图表数据工具类
 * @date 2024/2/28 16:59
 */
public class ChartUtils {

    //整个语句的作用是将 ChartConstant.GEN_CHART_REGEX 中定义的正则表达式编译为一个带有注释支持的 Pattern 对象,可以进行匹配
    private static final Pattern VALID_GEN_CHART_PATTERN = Pattern.compile(ChartConstant.GEN_CHART_REGEX, Pattern.COMMENTS);


    /**
     * 依照正则表达式匹配合法的echarts图表配置
     *
     * @param preGenChart 提取前的原始数据
     * @return 提取后的json传
     */
    public static Boolean genValidGenChart(String preGenChart) {
        //将生成的图表字符串修改成合法的json字符串
        String updateGenChartJson = updateGenChartJson(preGenChart);
        // 使用预定义的正则表达式模式匹配生成的图表字符串
        Matcher matcher = VALID_GEN_CHART_PATTERN.matcher(updateGenChartJson);
        //返回是否匹配成功
        return matcher.find();
    }

    /**
     * 修改AI生成的json字符串，将所有单引号改为双引号、去除所有注释
     *
     * @param preGenChart AI生成的原始字符串
     * @return 修改后的
     */
    public static String updateGenChartJson(String preGenChart) {
        // 替换字符串中的单引号为双引号，去掉所有注释
        return preGenChart.replaceAll("'", "\"").replaceAll("//.*", "");
    }
}
